/*
 * Copyright 2004 original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.gouwudai.table.view.style2;

import java.util.Iterator;

import org.extremecomponents.table.bean.Export;
import org.extremecomponents.table.core.TableModel;
import org.extremecomponents.table.view.html.BuilderConstants;
import org.extremecomponents.table.view.html.BuilderUtils;
import org.extremecomponents.table.view.html.StatusBarBuilder;
import org.extremecomponents.table.view.html.TwoColumnRowLayout;
import org.extremecomponents.util.HtmlBuilder;

/**
 * @author Eccn-sunpauliz
 */
public class ExToolbar extends TwoColumnRowLayout {
	
    public ExToolbar(HtmlBuilder html, TableModel model) {
    	super(html,model);
    }
    
    protected boolean showLayout(TableModel model) {
        boolean showStatusBar = BuilderUtils.showStatusBar(model);
        //boolean filterable = BuilderUtils.filterable(model);
        boolean showExports = BuilderUtils.showExports(model);
        boolean showPagination = BuilderUtils.showPagination(model);
        boolean showTitle = BuilderUtils.showTitle(model);
        if (!showStatusBar && !showExports && !showPagination && !showTitle) {
            return false;
        }

        return true;
    }


    protected void columnLeft(HtmlBuilder html, TableModel model) {
    	
    	boolean showStatusBar = BuilderUtils.showStatusBar(model);
    	boolean showExports = BuilderUtils.showExports(model);
    	
        if (!showStatusBar) {
            return;
        }

        html.td(1).styleClass(BuilderConstants.STATUS_BAR_CSS).close();
        new StatusBarBuilder(html, model).statusMessage();
        html.tdEnd();    	
    	
    	ExToolbarBuilder toolbarBuilder = new ExToolbarBuilder(html, model);
    	
        //html.td(4).close();
        //html.table(2).border("0").cellPadding("0").cellSpacing("1").styleClass(BuilderConstants.TOOLBAR_CSS).close();
        //html.tr(3).close();
        
        if (showExports) {
            Iterator iterator = model.getExportHandler().getExports().iterator();
            for (Iterator iter = iterator; iter.hasNext();) {
                html.td(2).close();
                Export export = (Export) iter.next();
                
                toolbarBuilder.exportItemAsImage(export);
                html.tdEnd();
            }
        }
        
        //html.trEnd(3);

        //html.tableEnd(2);
        //html.newline();
        //html.tabs(2);

        //html.tdEnd();

    }
    
    protected void columnRight(HtmlBuilder html, TableModel model) {
        //boolean filterable = BuilderUtils.filterable(model);
        boolean showPagination = BuilderUtils.showPagination(model);
        //boolean showExports = BuilderUtils.showExports(model);
        String _showGotoPages = (String)model.getTableHandler().getTable().getAttribute("showGotoPages");
        if(_showGotoPages==null)
        	_showGotoPages = model.getPreferences().getPreference(ExPreferencesConstants.TABLE_SHOWGOTOPAGES);
        String _showRowsDisplayed = (String)model.getTableHandler().getTable().getAttribute("showRowsDisplayed");
        if(_showRowsDisplayed==null)
        	_showRowsDisplayed = model.getPreferences().getPreference(ExPreferencesConstants.TABLE_SHOWROWSDISPLAYED);
        
        boolean showGotoPages = Boolean.valueOf(_showGotoPages).booleanValue();
        boolean showRowsDisplayed = Boolean.valueOf(_showRowsDisplayed).booleanValue();
 
        ExToolbarBuilder toolbarBuilder = new ExToolbarBuilder(html, model);

        html.td(2).align("right").close();

        html.table(2).border("0").cellPadding("0").cellSpacing("1").styleClass(BuilderConstants.COMPACT_TOOLBAR_CSS).close();

        html.tr(3).close();

        if (showPagination) {
            html.td(4).close();
            toolbarBuilder.firstPageItemAsImage();
            html.tdEnd();

            html.td(4).close();
            toolbarBuilder.prevPageItemAsImage();
            html.tdEnd();

            html.td(4).close();
            toolbarBuilder.nextPageItemAsImage();
            html.tdEnd();

            html.td(4).close();
            toolbarBuilder.lastPageItemAsImage();
            html.tdEnd();

            html.td(4).close();
            toolbarBuilder.separator();
            html.tdEnd();

            if (showRowsDisplayed){
	            html.td(4).style("width:20px").close();
	            toolbarBuilder.rowsDisplayed();
	            html.tdEnd();
            }
            
            if (showGotoPages){
	            html.td(4).style("width:20px").close();
	            toolbarBuilder.gotoPages();
	            html.tdEnd();
            }
            
//            if (filterable) {
//                html.td(4).close();
//                toolbarBuilder.separator();
//                html.tdEnd();
//            }
        }

//        if (filterable) {
//            if (showExports || showPagination) {
//                html.td(4).close();
//                toolbarBuilder.separator();
//                html.tdEnd();
//            }
//
//            html.td(4).close();
//            toolbarBuilder.filterItemAsImage();
//            html.tdEnd();
//
//            html.td(4).close();
//            toolbarBuilder.clearItemAsImage();
//            html.tdEnd();
//        }

        html.trEnd(3);

        html.tableEnd(2);
        html.newline();
        html.tabs(2);

        html.tdEnd();
    }
}
